package chapter5;

/**
 * @author lzy
 * @version v1.0
 * Create DateTime: 2019/4/18 13:34
 */
public class OverloadVarargs2 {
    static void f(Character... args) {
        System.out.println("first");
    }

    static void f(float i, Character... args) {
        System.out.println("second");
    }

    public static void main(String[] args) {
        //正确匹配到第二个函数
        f(1, 'a');
        // 以下调用会出现编译错误，提示对f的引用不明确
        //这是因为在进行参数类型匹配的时候，先进行基本类型隐式转换（从小到大转换）进行匹配，然后开始进行包装类型转换匹配，最后进行可变参数匹配
        //在下面这个匹配中，'a'可以转换为float类型，'b'与可变参数匹配，也可以a与b都与可变参数匹配，即没有一个能够完美匹配参数的函数，因此出现二义性
//        f('a', 'b');
    }
}
